/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Mercado.controller;

import Mercado.model.Cadastro;
import Mercado.model.Estoque;
import Mercado.model.Relatorio;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;

/**
 *
 * @author rafael
 */
public class Relatorio_controller {
    private Relatorio rel;
    private Cadastro cad;
    private Estoque e;
    
    public Relatorio_controller(Relatorio rel, Cadastro cad, Estoque e) {
        this.rel = rel;
        this.cad = cad;
        this.e = e;
    }
    
    public ChartPanel graficoClientes(Relatorio rel){
        DefaultPieDataset gra = rel.criaGraficoClientes();
        String tit = "Venda por Clientes (em R$)";
        String qtd = "Porcentagem";
        String leg = "";
        boolean legenda = true, tooltips = true, urls = true;
        JFreeChart graf = ChartFactory.createPieChart3D(tit, gra, legenda, tooltips, urls);
        ChartPanel area = new ChartPanel(graf, true);
        area.setSize(600,400);
        area.setVisible(true);
        return area;
    }
    
    public ChartPanel graficoItens(Relatorio rel){
        DefaultCategoryDataset gra = rel.criaGraficoItens();
        String tit = "Venda por Itens";
        String qtd = "Quantidade";
        String leg = "";
        boolean legenda = true, tooltips = true, urls = true;
        JFreeChart graf = ChartFactory.createBarChart3D(tit, leg, qtd, gra, PlotOrientation.VERTICAL, legenda, tooltips, urls);
        ChartPanel area = new ChartPanel(graf, true);
        area.setSize(600,400);
        area.setVisible(true);
        return area;
    }

    public void atualizaItens(JPanel aba) {
        try{
            aba.remove(0);
        }catch(ArrayIndexOutOfBoundsException ex){}
        ChartPanel ch = graficoItens(rel);
        ch.setBounds(10, 10, 600, 370);
        aba.add(ch);
        aba.revalidate();
        aba.repaint();
    }

    /**
     * @param rel the rel to set
     */
    public void setRel(Relatorio rel) {
        this.rel = rel;
    }
    
    public void setCad(Cadastro cad) {
        this.cad = cad;
    }
    
    public void setE(Estoque e) {
        this.e = e;
    }

    public void atualizaClientes(JPanel aba) {
        try{
            aba.remove(0);
        }catch(ArrayIndexOutOfBoundsException ex){}
        ChartPanel ch = graficoClientes(rel);
        ch.setBounds(10, 10, 600, 370);
        aba.add(ch);
        aba.revalidate();
        aba.repaint();
    }
    
    public ActionListener evtBotao(JPanel aba){
        ActionListener act = new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ev) {
                if (ev.getSource().equals(aba.getComponent(0))){
                    System.out.println();
                    e.geraRelatorio();
                    ((JLabel)aba.getComponent(5)).setText("Relatório de Estoque \"relatorios/relatorio_estoque.xls\" gerado!");
                    ((JLabel)aba.getComponent(5)).setForeground(Color.green);
                }
                else if(ev.getSource().equals(aba.getComponent(1))){
                    cad.geraRelatorioItem();
                    ((JLabel)aba.getComponent(5)).setText("Relatório de Estoque \"relatorios/relatorio_venda_item.xls\" gerado!");
                    ((JLabel)aba.getComponent(5)).setForeground(Color.green);
                }
                else if(ev.getSource().equals(aba.getComponent(2))){
                    cad.geraRelatorioVendaCliente();
                    ((JLabel)aba.getComponent(5)).setText("Relatório de Venda por Item \"relatorios/relatorio_venda_cliente.txt\" gerado!");
                    ((JLabel)aba.getComponent(5)).setForeground(Color.green);
                }
                else if(ev.getSource().equals(aba.getComponent(3))){
                    cad.geraRelatorioClientes();
                    ((JLabel)aba.getComponent(5)).setText("Relatório de Clientes Cadastrados \"relatorios/relatorio_clientes.xls\" gerado!");
                    ((JLabel)aba.getComponent(5)).setForeground(Color.green);
                }
                else if(ev.getSource().equals(aba.getComponent(4))){
                    cad.geraRelatorioItemPrefCli();
                    ((JLabel)aba.getComponent(5)).setText("Relatório de Estoque \"relatorios/relatorio__item_pref_cliente.xls\" gerado!");
                    ((JLabel)aba.getComponent(5)).setForeground(Color.green);
                }
            }
        };
        return act;
    }
    
}
